【やってみた】AWS Elemental MediaLiveとAWS Elemental MediaPackageでライブ配信してみた #reinvent
はじめに
清水です。先日発表されたAWS Media ServicesのAWS Elemental MediaLiveとAWS Elemental MediaPackageを使ってライブ配信をしてみたので、まとめてみます。
やってみた
MediaPackeageでChannelとEndpointの作成
まずはMediaPackageでChannelを作成します。AWS Management Consoleのスタートページから、ChannelIDを「MediaPackage-Channel-1」と入力して[Next step]で進みます。
Create channel画面でDescriptionを入力、Input typeは「Apple HLS」のまま[Create]でchannelを作成します。
「Successfully created channel!」と表示されたら、続いてEndpointsを作成します。[Add endpoint]ボタンから進みます。
IDとして「MediaPackage-Endpoint-1」を入力します。またPackager settingsの項目でTypeが「Apple HLS」になっていることを確認して[Save]ボタンで作成します。
続いて同様の手順で2つ目のChannelとEndpointを作成します。Channel一覧ページから[Create]で進みます。2つ目のChannle IDは「MediaPackage-Channle-2」、Endpointは「MediaPackage-Endpoint-2」としました。
MediaLiveでInputとChannelの作成
続いてMediaLiveのAWS Management ConsoleのスタートページからInputを作成します。[Create Input]ボタンで進みます。
Input detailsの項目、Input nameは「MediaLive-Input」とし、Input typeは「RTMP (push)」を選択します。
Input security groupの項目ではRTMP PUSHを許可するIPをCIDR blockで入力し、[Create input security group]から新規に作成します。
Input security groupの新規作成後はUse existingにチェックがつき、作成したInput security groupを使用するよう設定されています。 続いてInput destinationsの項目では、Destination A、Bともに「live/myStream」と入力します。これで[Create]ボタンからInputを作成します。
Inputが作成できたら、続いてはMediaLiveのChannelを作成します。AWS Management Console左側のメニューから「Channels」を選んで[Create channel]ボタンから進みます。
画面が遷移したら、まず、Channel templateから「HTTP live streaming」を選択します。テンプレートにより自動的に項目が設定されます。
続いてGeneral infoのChannel nameを設定します。今回は「MediaLive-Channel」としました。IAMロールの設定では「Create role from template」でIAMロールを作成、その後「Use existing role」で作成したIAMロールを選択します。
Attach inputの項目でInputを先ほど作成した「MediaLive-Input」を選択します。
続いてOutput groupsの設定です。左側のOutput groupsの「1.TN2224 (HLS)」をクリックします。HLS Group destination Aの項目、先ほどMediaPackageで作成したMediaPackage-Channel-1の情報を入力します。
MediaPachage-Channel1のInput URLをHLS Group destination AのURLに、MediaPachage-Channel1のUsernameをCredentialsのUser nameに入力します。Passwordについては「Create AWS Elemental MediaLive parameter.」の項目で任意のNameを入力、Password valueはMediaPachage-Channel1のPasswordを入力して、[Create AWS Elemental MediaLive parameter.]ボタンで作成、これを選択します。
HLS Group destination Bについても同様に、MediaPackageで作成したMediaPackage-Channel2のURL、Username, Passwordを入力します。
そして[Create channel]ボタンでMediaLiveのchannelを作成します。
MediaLive Channelの配信準備
配信の準備ができたら、MediaLiveのChannelを開始します。作成したChannel「MediaLive-Channel」について、作成したあとStateが Idleの状態なので、[Start]ボタンを押しましょう。StateがStartingになり、しばらくするとRunningになります。
配信エンコーダの設定と配信の開始
今回は配信エンコーダとしてOBS Studioを使用し、メディアソースとしてローカルファイルを指定しています。エンコーダからの配信先はMedia Live InputのEndpointになります。デフォルトで2ヶ所Endpointがあるのがすごいですね。ただ今回はOBSで1ヶ所のみに映像を送信します。Endpointsに表示されるIPアドレスとパスを以下のようにOBSの配信設定箇所で設定します。URL部分が/liveで終わること、続くmyStreamの部分はストリームキーの箇所に入力し、自動的にマスクされる点に注意します。これでOBSから配信を開始します。
配信の確認
配信の確認はMediaPackageのChannelのEndpoints部分から行うことができます。Previewの列のPlayのリンクを押すとPlayerが立ち上がり、再生を確認できます。またURL列のm3u8マニフェストファイルをSafariなどHLS対応ブラウザで開くことでも再生できます。QRコードも準備されていてうれしいですね!
まとめ
AWS Elemental MediaLiveとAWS Elemental MediaPackageを使ってライブ配信をしてみました。まだきちんとドキュメントの読み込みなどできておらずAWS Management Consoleからポチポチ進めていく感じでやっていきましたが、ライブ配信ができましたね!今回マニフェストファイル(m3u8ファイル)へのアクセスはMediaPackageのEndpointにしていますが、ここにCloudFrontなどCDNを連携させることもできるのか?などなど、引き続き調査していきたいと思います。